package com.example.demo.demo.datatype;

/**
 * Double类型测试
 *
 * 基本数据类型转换
 *
 * 精度
 * byte<short(char)<int<long<float<double
 * 1.由低精度向高精度需要强制转换
 * 2.当低精度和高精度运算的时候，运算结果会向高精度转
 *
 * 这是8中基本类型的内存中占用字节数（取值范围是2的（字节数X8-1）次方）
 * 1.整型
 * byte 1字节  1*8  －128～127
 * short 2字节 2*8  －32768～32767
 * int 4字节   4*8  （-2的31次方到2的31次方-1）
 * long 8字节  8*8 -2的63次方到2的63次方-1）
 *
 * 2.浮点型
 * float 4字节 4*8 float类型的数值有一个后缀F(例如：3.14F)
 * float是单精度类型,精度是8位有效数字 -3.40E+38 到 +3.40E+38之间(E5代表 10的5次方)
 * double  8字节 8*8 没有后缀F的浮点数值(如3.14)默认为double类型
 * double是双精度类型，精度是17位有效数字 -1.79E+308到+1.79E+308
 *
 * 3.char类型
 * char  2字节  2*8
 *
 * 4.boolean类型
 * boolean  1字节 1*8    false、true
 *
 * @author luowj12
 * @since 2021/6/15 15:12
 */
public class DoubleTest {

    public static void main(String[] args) {
        int b=3;
        double a = 5/4.0;
        int c = (int) a;
        double d = b;
        double e = 5.6;
        double f = b+e;
        double g = 25.0/12.0;
        double  h= 25.0/12.0f;
        float i = (float) (25.0f/12.0);
        float j = 25.0f/12.0f;
        //E是指数的意思，比如7.823E5=782300 这里E5表示10的5次方
        double k = 42345678901234567890123456789012345678f/1.0;
        float l = 42345678901234567890123456789012345678f/1.0f;

        System.out.println("a:"+a);
        System.out.println("c:"+c);
        System.out.println("d:"+d);
        System.out.println("e:"+e);
        System.out.println("f:"+f);
        System.out.println("g:"+g);
        System.out.println("h:"+h);
        System.out.println("i:"+i);
        System.out.println("j:"+j);
        System.out.println("k:"+k);
        System.out.println("l:"+l);
        System.out.println(3*1==3);
        System.out.println(3.0*1);
    }

}
